目的
要做APP的GUI测试,技术方案是Python+Appium。
遇到一个棘手的问题:我们的产品登陆页面的密码控件进行了安全加固,不能通过自动化输入密码。
解决方案有两个思路:
- 让开发提供单独的测试版本,绕过安全插件;————开发不同意
- 通过图像识别技术,从密码键盘识别密码,计算坐标,模拟屏幕点击;————实现成本过高
最后商议了一个折中的方案:APP提供手势密码,自动化通过手势密码登陆
方案
基本思路是通过TouchAction中提供的各种方法,如press()、move_to()等,模拟手势操作,完成手势登陆。
TouchAction
AppiumDriver的辅助类,主要针对手势操作,比如滑动、长按、拖动等。TouchAction的原理是讲一系列的动作放在一个链条中,然后将该链条传递给服务器。服务器接受到该链条后,解析各个动作,逐个执行。
主要方法有:
press()
release()
move_to()
tap()
perform()
…
遇到的问题
我们APP中的手势键盘,九宫格整体上是一个元素,而不是每个点为一个元素,这样没法获取各个点的坐标。
解决方法是通过九宫格的坐标,计算出各个点的具体坐标,再填入脚本中。
代码实现
|
|
这样就绘制了一个小”L”形的手势密码
注意:move_to()参数中的x、y都是相对坐标